package com.hqyj.javaSpringBoot.modules.common.entiy;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.util.Arrays;

/**
 * 枚举类中的多个常量以json的方式同时返回到前端，这时我们可以借助@JsonFormat注解的Shape属性
 */
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum ImageType {
    /**
     * PROFILE_BIG 大图片
     * PROFILE_SMALL 小图片
     * 通过构造器来创建
     */
    PROFILE_BIG("profile-big", 220, 220, 50),
    PROFILE_SMALL("profile-small", 130, 130, 50),
    ;

    public String name;
    public int width;
    public int height;
    public int size;

    /**
     * 构造方法
     * @param name 文件名称
     * @param width 宽度
     * @param height 高度
     * @param size 最大的图片值，单位为KB
     */
    ImageType(String name, int width, int height, int size) {
        this.name = name;
        this.width = width;
        this.height = height;
        this.size = size;
    }

    /**
     * ImageType.values()表示获取枚举中的PROFILE_BIG和PROFILE_SMALL
     * stream().filter过滤，findFirst()取第一个值，
     * 将传入的name和PROFILE_BIG、PROFILE_SMALL进行比较，相等的话的取第一个，不相等返回一个null
     * @param name
     * @return
     */
    public static ImageType getImageTypeByName(String name) {
        return Arrays.asList(ImageType.values())
                .stream()
                .filter(item -> item.name.equalsIgnoreCase(name))
                .findFirst()
                .orElse(null);
    }
}
